package com.longge;

import java.util.Scanner;
import java.util.stream.IntStream;


/**
 * @author 87050
 */
public class FindKth {
    //查找数组arr中第k小的奇数,如果不存在则返回0. (arr[i] > 0 (i>=0))
    public static int findKth(int[] arr, int k) {
        // --思路 先排序 用索引遍历  我选择快速排序 复杂度O（nlogn）
        int length = arr.length;
        if (length==0||length<k){
            return 0;
        }
        sort(arr, 0, length - 1);
        return arr[k-1];
    }

    /**
     * @param array
     * @param left  左边界
     * @param right 右边界
     */
    public static void sort(int[] array, int left, int right) {
        if (left > right) {
            return;
        }
        // base中存放基准数
        int base = array[left];
        int i = left, j = right;
        while (i != j) {
            // 先从右边开始往左找，直到找到比base值小的数
            while (array[j] >= base && i < j) {
                j--;
            }

            // 再从左往右边找，直到找到比base值大的数
            while (array[i] <= base && i < j) {
                i++;
            }

            // 上面的循环结束表示找到了位置或者(i>=j)了，交换两个数在数组中的位置
            if (i < j) {
                int tmp = array[i];
                array[i] = array[j];
                array[j] = tmp;
            }
        }

        // 将基准数放到中间的位置（基准数归位）
        array[left] = array[i];
        array[i] = base;

        // 递归，继续向基准的左右两边执行和上面同样的操作
        // i的索引处为上面已确定好的基准值的位置，无需再处理
        sort(array, left, i - 1);
        sort(array, i + 1, right);

    }


    public static void main(String[] args) {

       String a = "aaaaa";
       String b = "a";
        char[] chars = a.toCharArray();
        int res = 0;
        for (int i = 0; i < chars.length; i++) {
            if (b.charAt(0)==chars[i]){
                res++;
            }
        }


    }
}
